﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace DADOS.auxiliares
{
    public class metProfissional
    {

        DB_PROAD banco = new DB_PROAD();

        private SqlConnection _conexao = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_PROAD_SQL"].ConnectionString);

        private void FecharConexao(object banco)
        {
            ((DB_PROAD)banco).Connection.Close();
        }

        private void InicializarConexao(object banco)
        {
            ((DB_PROAD)banco).Connection.Open();
        }

        public List<TB_CATEGORIA_PROF> ListarCategoriaProf() 
        {
            var listCat = new List<TB_CATEGORIA_PROF>();

            try
            {
                InicializarConexao(banco);
                listCat = banco.TB_CATEGORIA_PROF.Where(q => q.NR_STATUS == 1).OrderBy(q => q.NO_CATEGORIA).ToList();
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }

            return listCat;
        }

        /// <summary>
        /// Retonar Categoria
        /// </summary>
        /// <param name="intCodCat">Código categoria</param>
        /// <returns>obj TB_CATEGORIA_PROF</returns>
        public TB_CATEGORIA_PROF SelecionarCategoriaProf(int intCodCat)
        {
            try
            {
                InicializarConexao(banco);
                var objCat = banco.TB_CATEGORIA_PROF.Where(q => q.CO_CATEGORIA_PROF == intCodCat).FirstOrDefault();
                return objCat;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }

            
        }

        public List<TB_ATENCAO_SUS> ListarAtencaoSUS()
        {
            var listAten = new List<TB_ATENCAO_SUS>();

            try
            {
                InicializarConexao(banco);
                listAten = banco.TB_ATENCAO_SUS.Where(q => q.NR_STATUS == 1).OrderBy(q => q.CO_ATENCAO_SUS).ToList();
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }

            return listAten;
        }

        public DataSet ListarProfissional(int intCodCategoria, string strMicroArea)
        {
            DataSet ds = new DataSet();

            string Query = "SELECT PROF.NO_PROFISSIONAL,  ";
	            Query += " CAT.NO_CATEGORIA,  ";
	            Query += "  PROF.DS_MICRO_AREA  ";
                Query += "FROM TB_PROFISSIONAL AS PROF   ";
                Query += " INNER JOIN TB_CATEGORIA_PROF AS CAT ";
                Query += " ON CAT.CO_CATEGORIA_PROF = PROF.CO_CATEGORIA_PROF";
                Query += " WHERE 1 = 1";

            if (!string.IsNullOrEmpty(strMicroArea))
            {
                Query += " AND PROF.DS_MICRO_AREA LIKE '%" + strMicroArea + "%'";
            }

            if (intCodCategoria > 0)
            {
                Query += " AND CAT.CO_CATEGORIA_PROF = " + intCodCategoria;
            }



            Query += " ORDER BY CAT.NO_CATEGORIA";

            SqlCommand cmd = new SqlCommand(Query, _conexao);

            cmd.Connection = _conexao;

            if (_conexao.State == ConnectionState.Closed)
            {
                _conexao.Open();
            }
            SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd);
            dataAdapter.Fill(ds);

            _conexao.Close();

            return ds;
        }
    }
}
